概要
AWS Lambdaでライブラリを利用する際、レイヤーを作成することでライブラリの管理が簡単になり、業務ロジックのソースコードサイズを小さくすることができます。これにより、Lambdaのソースコードサイズが大きくなりすぎてAWSコンソール上での確認や編集が困難になる問題を回避できます。
Pythonでレイヤーを作成する方法を説明します。LambdaはLinuxベースで動作しているため、Windows環境でライブラリを取得するとLambda実行時にエラーが発生することがあります。そのため、WSL(Windows Subsystem for Linux)を使ってLinux環境でライブラリを取得することをお勧めします。
レイヤー作成方法
WSLの設定
WSLをインストールし、Linux環境を設定します。WSL内でのファイル操作は、Windowsのファイルシステムとも統合されています。具体的には、WSLで/mnt/d/
にファイルを置くと、WindowsのDドライブ直下にファイルが表示されます。
ライブラリのソースコードを取得
WSLを開き、以下のPIPコマンドで必要なライブラリを指定のパスにダウンロードします。これにより、依存ライブラリも自動的に取得されます。
pip download requests --dest /mnt/d/python/lib/python3.12/site-packages/
pip download pytz --dest /mnt/d/python/lib/python3.12/site-packages/
pip download mysql-connector-python --dest /mnt/d/python/lib/python3.12/site-packages/
ライブラリの解凍
ダウンロードした.whl
ファイルを解凍します。
unzip /mnt/d/python/lib/python3.12/site-packages/pytz-2024.1-py2.py3-none-any.whl -d /mnt/d/python/lib/python3.12/site-packages/
不要なファイルの削除
解凍後の.whl
ファイルを削除します。
rm /mnt/d/python/lib/python3.12/site-packages/*.whl
ZIPファイルの作成
解凍されたライブラリを/python/lib/python3.12/site-packages/
フォルダー構成の下に置き、全体をZIPファイルに圧縮します。Lambdaがライブラリを認識できるよう、パスの「python3.12」をLambdaのランタイムバージョンに合わせる必要があります。例えば、ランタイムがPython 3.10の場合、パスはpython/lib/python3.10/site-packages/
にします。
AWS Lambda Layerの作成
- AWS管理コンソールにログインし、Lambdaサービスに移動します。
- 左側のナビゲーションで「レイヤー」を選択し、「レイヤーの作成」ボタンをクリックします。
- レイヤーの名前、説明、ランタイム環境(例:Python 3.12)などの情報を入力します。
- 作成したZIPファイルをアップロードします。50MBまでのサイズのファイルを直接アップロード可能ですが、それ以上のサイズの場合はS3に保存し、S3のURLを入力します。
Lambda関数へのレイヤー追加
- レイヤーを追加したいLambda関数を開き、その画面の一番下までスクロールします。
- 「レイヤーの追加」をクリックし、カスタムレイヤーオプションを選択して、作成したレイヤーを選択し、追加します。
Lambda関数でのライブラリ利用
ソースコード内で、通常のimport
文を使ってライブラリを追加できます。python复制代码import requests import pytz import mysql.connector
この方法で、Lambda関数のソースコードの管理が簡単になり、効率的にライブラリを利用できるようになります。
发表回复
要发表评论,您必须先登录。